package com.adv.io;

import java.io.*;
import java.util.*;

/**
 * -1:输出当前电脑中所有的盘符 -2:输入一个文件夹名，输出其中所有的文件名，包括子文件夹中的文件。。。
 * 1：输入一个文件名，把其内容用byte的方式输出，用单字节的方式 2：输入一个文本文件名，把其内容用char的方式输出
 * 3：实现文件复制的功能，通过命令行参数，输入一个源文件名，和目标文件夹，复制后文件名保持不变。 比如输入 d:\mydoc\1.jpg,
 * 和f:\img,则复制 d:\mydoc\1.jpg 到 f:\img 目录下。
 * 
 * @author zhaoyang
 *
 */
public class IO_Work02 {

	public static void findFile(File f) {
		File[] f1 = f.listFiles();
		if (f1 != null) {
			for (int i = 0; i < f1.length; i++) {
				findFile(f1[i]);
			}
		} else {
			System.out.println(f);
		}

	}

	public static void main(String[] args) throws IOException {// 偷个懒……
		// -1:输出当前电脑中所有的盘符
		File[] roots = File.listRoots();
		for (int i = 0; i < roots.length; i++) {
			System.out.println(roots[i]);
		}
		System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>");
		// -2:输入一个文件夹名，输出其中所有的文件名，包括子文件夹中的文件。。。
		File f1 = new File("/Users/zhaoyang/Documents/Java/电子书");
		findFile(f1);// 用了递归，静态方法在main上面

		// 1：输入一个文件名，把其内容用byte的方式输出，用单字节的方式
		File f2 = new File("/Users/zhaoyang/Desktop/67_2.txt");
		FileInputStream fi1 = new FileInputStream(f2);
		byte[] b1 = new byte[fi1.available()];
		fi1.read(b1);
		for (byte b : b1) {
			System.out.print(b + "\t");
		}
		fi1.close();
		System.out.println();
		System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>");

		// 2：输入一个文本文件名，把其内容用char的方式输出
		InputStream fi3 = new FileInputStream("/Users/zhaoyang/Desktop/67_2.txt");
		byte[] b3 = new byte[fi3.available()];
		int len = fi3.read(b3);
		String str = new String(b3, 0, len);
		System.out.println(str);
		System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>");

		// 3：实现文件复制的功能，通过命令行参数，输入一个源文件名，和目标文件夹，复制后文件名保持不变。
		// 比如输入 d:\mydoc\1.jpg, 和f:\img,则复制 d:\mydoc\1.jpg 到 f:\img 目录下。
		Scanner input = new Scanner(System.in);
//		System.out.println("请输入文件路径和文件名，格式务必为（/c:/Desktop/《Think in Java》.txt）：");
//		String str3 = input.next();
//		System.out.println("请输入目标文件夹，格式务必为（/c:/Desktop/《Think in Java》.txt)：");
//		String str4 = input.next();
		// 源文件
		File start = new File("/Users/zhaoyang/Desktop/作业/《Think in Java》.txt");
		// 目标文件
		File end = new File("/Users/zhaoyang/Desktop/《Think in Java》.txt");
		FileInputStream start2 = new FileInputStream(start);
		FileOutputStream end2 = new FileOutputStream(end);
		byte[] b2 = new byte[1024];
		int len3 = -1;
		String str3;
		String str4 = "";
		while ((len3 = start2.read(b2)) != -1) {
			str3 = new String(b2, 0, len3);
			str4 += str3;
		}
		end2.write(str4.getBytes());
		end2.close();
		start2.close();

		// 4：实现文件剪切的功能，输入一个源文件名，和目标文件夹，剪切后文件名保持不变。
		/// Users/zhaoyang/Desktop/《Think in Java》.txt
		/// Users/zhaoyang/Desktop/作业/《Think in Java》.txt
		System.out.println("请输入文件路径和文件名，格式务必为（/c:/Desktop/《Think in Java》.txt）：");
		String str1 = input.next();
		System.out.println("请输入目标文件夹，格式务必为（/c:/Desktop/《Think in Java》.txt)：");
		String str2 = input.next();
		File f4 = new File(str1);
		File f5 = new File(str2);
		f4.renameTo(f5);
		System.out.println("在新文件夹里了不？：" + f5.exists());

	}

}
